1.请分别从系统和用户的角度,阐述操作系统的功能,并具体描 述操作系统需要提供哪些服务
从系统的角度,操作系统是一个资源管理器,它负责对计算机中的各种资源进行有效地分配、调度和控制。操作系统需要提供以下服务:
进程管理:负责进程的创建、撤销、切换、同步和通信等。
存储管理:负责内存空间的分配、回收、保护和扩充等。
设备管理:负责设备驱动程序的加载、卸载,以及设备请求队列的维护等。
文件管理:负责文件系统的组织、存储、访问和保护等。
作业管理:负责作业(或任务)的提交、调度、执行和结束等。
从用户的角度,操作系统是一个服务提供者,它为用户提供了方便易用且高效可靠地使用计算机资源。操作系统为用户提供了方便易用且高效可靠地使用计算机资源的服务,主要有以下几类:
用户接口:提供了命令行接口和图形用户界面等,让用户可以与计算机进行交互。
程序执行:提供了加载、运行、暂停和终止程序等功能,让用户可以执行自己编写或下载的程序。
I/O操作:提供了对各种输入输出设备的控制和访问,让用户可以进行数据的输入和输出。
文件操作:提供了对文件系统中文件和目录的创建、删除、修改、复制、移动等操作,让用户可以管理自己的数据。
通信:提供了进程间通信和网络通信等功能,让用户可以实现不同进程或不同计算机之间的数据交换。
错误检测:提供了对硬件故障和软件错误的检测和处理,让用户可以避免或减少因为错误而造成的损失。
2.请阐述multi-programming 和 multi-tasking 的概念与设计目的
多道程序设计(Multi-Programming)是指在计算机系统中,允许多个程序同时驻留在内存中,并由一个物理程序计数器分时执行。多道程序设计的目的是提高CPU的利用率,减少空闲时间。
多任务(Multi-Tasking)是指在计算机系统中,允许多个进程或线程并发执行,并由多个逻辑程序计数器控制。多任务的目的是提高系统的吞吐量,响应时间和用户体验。
3.请阐述缓存的思想以及工作原理
缓存是一种可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。缓存的工作原理是利用程序访问的局部性原则,即CPU在某一时刻需要某个数据,那么很可能下一步就需要其附近的数据;当某个数据被访问过一次之后,过不了多久时间就会被再一次访问。为了提高CPU和主存之间的数据传输效率,缓存会把主存中被频繁访问的程序块和数据块复制到自己的空间中,这样当CPU需要这些数据时,就可以直接从缓存中读取,而不用等待主存的响应。
4.请阐述什么是系统调用,以及系统调用与API的逻辑关系
系统调用是用户程序向操作系统内核请求服务的一种特殊的接口。系统调用是偏底层、偏实现的,通常由汇编语言或者C语言实现。
系统调用与API的逻辑关系是:API是偏上层、偏接口的,通常由高级语言实现,API可以调用系统调用,也可以调用其他库函数或者自定义函数。API的作用是为了提供更方便、更统一、更跨平台的编程接口,隐藏底层的细节和差异。
5.阐述Dual Mode的工作机制,以及采用 Dual Mode 的原因。
Dual Mode是指操作系统将CPU的运行模式分为两种:内核态(Kernel Mode)和用户态(User Mode)。
在内核态下,CPU可以执行任何指令,包括访问硬件设备、改变特权级别等;在用户态下,CPU只能执行一些受限的指令,不能直接访问硬件设备,如果需要使用内核提供的服务,必须通过系统调用切换到内核态。
采用Dual Mode的原因是为了保护操作系统和硬件设备不被恶意或错误的用户程序破坏,同时也为了实现多任务和多用户的功能。Dual Mode可以通过特殊的寄存器来记录当前CPU的运行模式,并在需要时进行切换。
6.分别阐述Monolithic大内核结构,层次化结构,模块化结构和微内核结构的特点和优劣
Monolithic大内核结构是一种操作系统内核架构,其特点是整个内核程序是一个单一的二进制执行文件,运行在核心空间的监管者模式下。Monolithic大内核结构将各种功能模块,如文件系统、设备驱动、进程管理、内存管理等,都集成在一个大的程序中。
Monolithic大内核结构的优点是性能高,因为各个模块之间不需要通过消息传递来通信,而是直接调用函数或共享数据
缺点是可扩展性差,因为任何修改都需要重新编译整个内核;而且可靠性低,因为任何一个模块出错都可能导致整个系统崩溃。
层次化结构是一种将一个大型复杂的系统分解成若干单向依赖的层次,即每一层都提供一组功能且这些功能只依赖该层以内的各层。
层次化结构的优点是:简化设计实现,隐藏底层实现,方便调试维护,提高设计的准确性和可靠性。
缺点是:增加了系统的开销和延迟,降低了系统的效率和灵活性,可能造成某些功能的重复或冗余。
模块化结构是一种将操作系统划分为若干个功能独立的模块,每个模块都有明确的接口和功能。模块之间可以相互调用,但不直接访问对方的内部数据。
优点:模块化结构可以提高操作系统的可维护性、可扩展性、可移植性和可重用性。因为每个模块都是相对独立的,所以可以方便地修改、增加或删除某些功能而不影响其他部分。同时,也可以方便地将某些通用的模块应用到其他的操作系统中。
缺点:模块化结构也会带来一些开销和复杂度。因为每个模块都需要定义清晰的接口,并且需要在不同的模块之间进行通信和协调。这就会增加操作系统的设计难度和运行时的开销。
微内核结构是一种将操作系统的核心功能放在一个小而精巧的内核中,而将其他的功能移出内核,作为用户态的服务器程序来实现。微内核之间通过消息传递来进行通信。
优点:微内核结构可以提高操作系统的可靠性、安全性、可移植性和可扩展性。因为每个服务器都是相对独立的,所以如果某个服务器出现故障或被攻击,不会影响整个系统的稳定性。同时,也可以方便地在不同的硬件平台上运行或增加新的功能。
缺点:微内核结构也会带来一些开销和复杂度。因为每个服务器都需要通过消息传递来与微内核或其他服务器交互,这就会增加操作系统的设计难度和运行时的开销。同时,也会降低操作系统的性能和效率。
7.举例说明什么是机制与策略分离的设计原则,并说明该设计的 好处。
机制与策略分离的设计原则是指在系统设计中,将实现某种功能的具体方法(策略)与提供该功能的基本模型(机制)分开,从而提高系统的灵活性和可扩展性。该设计原则的好处有以下几点:
降低了系统的复杂度,使得机制和策略各自独立,易于理解和修改。
增加了系统的通用性,使得同一种机制可以支持多种策略,或者同一种策略可以适应不同的机制。
提高了系统的效率,使得策略可以根据实际情况进行选择和调整,而不受机制的限制。
促进了系统的创新,使得开发者可以自由地设计和实现新的策略,并且可以方便地与现有的机制结合。
一个典型的例子是Linux内核,它遵循了机制与策略分离的原则,在内核中提供了一些基本功能(如进程管理、内存管理、文件系统等)作为机制,在用户空间中提供了各种应用程序(如shell、编辑器、编译器等)作为策略。这样做使得Linux内核具有很高的灵活性和可移植性,并且能够支持多种不同类型和需求的用户。